UnityがPlayMode起動中かどうかをメインスレッド外から見分ける方法
概要
メインスレッドだろうと、UnityがPlayMode起動中かどうかは判断できない(compile中なのでisCompilingにはなる)ので、
わりと有益な感じ。
マルチスレッドなエディタコードとかで効率化計ってて、PlayMode起動に入ったら即なにかを開始する、みたいなエディタコードで適応したい。
方法
プロジェクト内にUnityが特定のファイルを作り出すのを利用する。
PROJECT_FOLDER/Temp/__EditModeScene の有無でチェックができる。
プレイモードを起動 → 存在しない場合新規作成される
→ 存在する場合上書きする
Unity 4.6.1系で確認済み。
が、このデータは、「Unityがクラッシュした際に復旧する最後の手段」でもある。
参考:テラシュールウェア
Unityエディタのクラッシュ時に失われたシーン情報を復旧させる裏ワザ
http://tsubakit1.hateblo.jp/entry/2014/10/20/230851
つまり俺都合で勝手に消したりすると殺意の波動にやられる。
ので、消す訳にはいかず、タイムスタンプのみを切り出して別途保存する形で扱う。
・プレイモード or 単なるコンパイルが発生したあと、エディタ側コードの起動が発生する
・起動後、適当なタイミングや適当なスレッドで __EditModeScene のタイムスタンプをチェック
・以前のものと異なるようであればプレイモード開始中!
・以前のものと同じであれば、単なるコンパイル
という区別が出来る。
弱点
モロにUnityのversionに左右されるんじゃないだろうか。
あと別に、エディタメニューをコードから実行する形で隠蔽、フラッグをファイルとかに書く、というのも、まあマシで良いと思う。
以上。